library(ggplot2)
library(grid)
library(gridExtra)
library(psych)
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:gridExtra':
##
## combine
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(knitr)
library(memisc)
## Loading required package: lattice
## Loading required package: MASS
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
##
## Attaching package: 'memisc'
## The following objects are masked from 'package:dplyr':
##
## collect, query, recode, rename
## The following objects are masked from 'package:stats':
##
## contr.sum, contr.treatment, contrasts
## The following object is masked from 'package:base':
##
## as.array
knitr::opts_chunk$set(message=FALSE, warning = FALSE, echo=FALSE)
# 全局配置
set.seed(1984)
opts_chunk$set(fig.width=6, fig.height=6, fig.align='center',
warning=FALSE, message=FALSE, echo=FALSE,
cache=TRUE, echo=FALSE)
这个整⻬的数据集包含1,599 种红酒,以及 11 个关于酒的化学成分的变量。 ⾄少 3 名葡萄酒专家对每种酒的质量进⾏了评分,分数在 0(⾮常差)和 10(⾮常好)之间。
## 'data.frame': 1599 obs. of 13 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ fixed.acidity : num 7.4 7.8 7.8 11.2 7.4 7.4 7.9 7.3 7.8 7.5 ...
## $ volatile.acidity : num 0.7 0.88 0.76 0.28 0.7 0.66 0.6 0.65 0.58 0.5 ...
## $ citric.acid : num 0 0 0.04 0.56 0 0 0.06 0 0.02 0.36 ...
## $ residual.sugar : num 1.9 2.6 2.3 1.9 1.9 1.8 1.6 1.2 2 6.1 ...
## $ chlorides : num 0.076 0.098 0.092 0.075 0.076 0.075 0.069 0.065 0.073 0.071 ...
## $ free.sulfur.dioxide : num 11 25 15 17 11 13 15 15 9 17 ...
## $ total.sulfur.dioxide: num 34 67 54 60 34 40 59 21 18 102 ...
## $ density : num 0.998 0.997 0.997 0.998 0.998 ...
## $ pH : num 3.51 3.2 3.26 3.16 3.51 3.51 3.3 3.39 3.36 3.35 ...
## $ sulphates : num 0.56 0.68 0.65 0.58 0.56 0.56 0.46 0.47 0.57 0.8 ...
## $ alcohol : num 9.4 9.8 9.8 9.8 9.4 9.4 9.4 10 9.5 10.5 ...
## $ quality : int 5 5 5 6 5 5 5 7 7 5 ...
## id fixed.acidity volatile.acidity citric.acid
## Min. : 1.0 Min. : 4.60 Min. :0.1200 Min. :0.000
## 1st Qu.: 400.5 1st Qu.: 7.10 1st Qu.:0.3900 1st Qu.:0.090
## Median : 800.0 Median : 7.90 Median :0.5200 Median :0.260
## Mean : 800.0 Mean : 8.32 Mean :0.5278 Mean :0.271
## 3rd Qu.:1199.5 3rd Qu.: 9.20 3rd Qu.:0.6400 3rd Qu.:0.420
## Max. :1599.0 Max. :15.90 Max. :1.5800 Max. :1.000
## residual.sugar chlorides free.sulfur.dioxide
## Min. : 0.900 Min. :0.01200 Min. : 1.00
## 1st Qu.: 1.900 1st Qu.:0.07000 1st Qu.: 7.00
## Median : 2.200 Median :0.07900 Median :14.00
## Mean : 2.539 Mean :0.08747 Mean :15.87
## 3rd Qu.: 2.600 3rd Qu.:0.09000 3rd Qu.:21.00
## Max. :15.500 Max. :0.61100 Max. :72.00
## total.sulfur.dioxide density pH sulphates
## Min. : 6.00 Min. :0.9901 Min. :2.740 Min. :0.3300
## 1st Qu.: 22.00 1st Qu.:0.9956 1st Qu.:3.210 1st Qu.:0.5500
## Median : 38.00 Median :0.9968 Median :3.310 Median :0.6200
## Mean : 46.47 Mean :0.9967 Mean :3.311 Mean :0.6581
## 3rd Qu.: 62.00 3rd Qu.:0.9978 3rd Qu.:3.400 3rd Qu.:0.7300
## Max. :289.00 Max. :1.0037 Max. :4.010 Max. :2.0000
## alcohol quality
## Min. : 8.40 Min. :3.000
## 1st Qu.: 9.50 1st Qu.:5.000
## Median :10.20 Median :6.000
## Mean :10.42 Mean :5.636
## 3rd Qu.:11.10 3rd Qu.:6.000
## Max. :14.90 Max. :8.000
该数据集有1599个条目, 每个条目包含13个变量, 给每个条目加了一个id字段. 所有字段都是数字类型的
其中相关度较高的有: volatile.acidity - critic.acid -0.55 fixed.acidity - critic.acid 0.67 fixed.acidity - density 0.67 fixed.acidity - pH -0.68
多数直方图都是右偏态分布
volatile acidity多数集中在0.2到0.7之间, 使用cut来查看一下可以发现集中在其中4个区间里
再来查看一下citric acid值, 似乎有较为明显的outlier, 我们使用箱型图来查看一下
可以发现1.0是个outlier, 其他值分布在0.1 到0.8 之间
free sulfur dioxide 是个明显的右偏分布, 我们使用对数坐标和根号坐标观察
可以看出在对数坐标下呈现正态分布, 并且有6, 11, 15, 18 这几个常见的值
我们现在查看一下free sulfur dioxide在total sulfur dioxide的占比情况, 定义一个新的变量
可以看出free sulfur dioxide的百分比呈现正态分布, 均值在0.4
再观察一下alcohol值
可以发现多数值分布在9.0以上部分均匀递减
再观察一下residual.sugar值的分布
可以看出多数的residual.sugar集中在2.5左右, 较高的值呈现长尾分布
再来观察一下density值
可以看出基本呈现正态分布, 从0.99到1.004之间, 均值和中位数大约是0.997左右
现在再将quality值和其他变量结合起来综合研究. 我们将quality的值分为三组: 差: quality <= 4 中: quality in (5, 6) 优: quality >= 7
我们将这个新等级变量加入数据集的字段
不同的属性下quanlity的差别提现的较为明显的有 alcohol, critic acid, volatile acidity alcohol和critic acid和 class正相关, 而volatile acidity和 class负相关
根据之前两两变量之间perason相关系数的观察, 我们针对四个明显的变量用箱型图观察: volatile.acidity, citric.acid, sulphates, alcohol
我们用2d密度图来观察一下几对变量之间的关系, 为了直观我们去掉了class=regular的数据, 只保留了good和bad的数据 我们来观察
可以观察到有一些变量存在outlier, 总体上good和bad的class在这几对变量对比上差别较为明显
因为“quality”的取值较为主观, 我们引入了“class”作为评估葡萄酒好坏的标准, 只有good(>7), regular(5, 6), bad(<5)三种取值, 便于观察
接下来我们比较了几对变量之间的关联性, 在不同的class下的分布情况, 我们发现regular的葡萄酒分布的比较分散, 多数情况下regular和good/bad之间的界限难以区分, 所以我们只拿good和bad两类来观察, 让结果更为明显
我们发现, 多数good级别的葡萄酒有中等的citric acid和低的volatile acidity. bad级别的葡萄酒通常有较高的volatile acidity和较低的citric acid. 同样的,good级别的葡萄酒有更高的sulphates, 更高的alcohol
根据之前的变量之间的关系研究, 发现citric.acid 和quality之间有正相关性. 但是如果我们观察散点图, citric.acid在good和bad级别下并没有明显的界限.
这张图展示了数据集的每个特征的密度图, 把等级分为了三类: bad, regular, good. 使我们在不同的等级之间较为清晰的观察 观察到几个最佳的属性:volatile acidity/citric acid/sulphates/alcohol 其他属性, 比如fixed acidity, free sulfur dioxide 也有明显的分辨等级的特征
我们分析了pearson相关度比较显著的4个变量: volatile acidity, citric acid, sulphates, alcohol 使用箱型图观察, 去掉了一些outlier, 根据三种品质: bad, regular, good 使用了不同的颜色, 标注了变量的均值. 观察结果比较明显的呈现出volatile acidity和品质负相关, 其他三个变量都是正相关
在这张图里我们用散点图的方法用6对变量两两比较, 并且去掉了regular级别的数据, 让观察结果更加明显. 并且去掉了一些outlier. 这样更好的区分了bad和good级别的红酒在不同属性之间的差别.
我们分析了红酒数据集, 有1599个记录, 12个属性. 我们分析了各种属性对红酒品质的影响 确定了4个变量: volatile acidity, citric acid, sulphates, alcohol 讲品质分为三类: bad, regular, good 我们发现volatile acidity和品质具有正相关, 其他三个变量和品质负相关
我们又用了多变量分析观察到不同的变量关系对红酒品质的影响 为了方便观察我们只考虑了bad和good, 因为多数情况下regular品质的红酒对我们的趋势研究没什么贡献 通过研究, good品质的红酒具有较低的volatile acidity, 较高的alcohol, bad品质的红酒
在未来的研究中, 我们可以用机器学习方法研究这个问题, 由于这个案例的数据集较小, 可以通过朴素贝叶斯方法对数据集分类. 随着数据集增大, 通过决策树/随即森林的方法能更好的对数据分类. 如果有更好的计算条件, 还可以使用支持向量机.